package com.zoncont.estate.service.impl;

import com.zoncont.common.core.text.Convert;
import com.zoncont.common.utils.StringUtils;
import com.zoncont.estate.domain.Company;
import com.zoncont.estate.mapper.CompanyMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.zoncont.estate.service.ICompanyService;

import java.util.List;

/**
 * 公司账号 服务层实现
 *
 * @author zoncont.ahanu
 * @date 2019-04-08
 */
@Service
public class CompanyServiceImpl implements ICompanyService {
    @Autowired
    private CompanyMapper companyMapper;

    /**
     * 查询公司账号信息
     *
     * @param companyId 公司账号ID
     * @return 公司账号信息
     */
    @Override
    public Company selectCompanyById(Integer companyId) {
        return companyMapper.selectCompanyById(companyId);
    }

    /**
     * 查询公司账号列表
     *
     * @param company 公司账号信息
     * @return 公司账号集合
     */
    @Override
    public List<Company> selectCompanyList(Company company) {
        return companyMapper.selectCompanyList(company);
    }

    /**
     * 新增公司账号
     *
     * @param company 公司账号信息
     * @return 结果
     */
    @Override
    public int insertCompany(Company company) {
        company.setStatus("1");
        return companyMapper.insertCompany(company);
    }

    /**
     * 修改公司账号
     *
     * @param company 公司账号信息
     * @return 结果
     */
    @Override
    public int updateCompany(Company company) {
        return companyMapper.updateCompany(company);
    }

    /**
     * 删除公司账号对象
     *
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    @Override
    public int deleteCompanyByIds(String ids) {
        return companyMapper.deleteCompanyByIds(Convert.toStrArray(ids));
    }

    /**
     * 校验公司名称
     */
    @Override
    public String checkNameUnique(Company company) {
        Company info = companyMapper.checkNameUnique(company);
        return checkCompany(company, info);
    }

    /**
     * 校验公司登录码
     */
    @Override
    public String checkAccountUnique(Company company) {
        Company info = companyMapper.checkAccountUnique(company);
        return checkCompany(company, info);
    }

    /**
     * 校验公司标识码
     */
    @Override
    public String checkCompIdUnique(Company company) {
        Company info = companyMapper.checkCompIdUnique(company);
        return checkCompany(company, info);
    }

    /**
     * 校验公司数据
     * @param company       传入数据
     * @param info          查找数据
     * @return              比较结果，0：不存在，1：已存在
     */
    private String checkCompany(Company company, Company info){
        String result = "0";
        Long companyId = StringUtils.isNull(company.getCompanyId()) ? -1L : company.getCompanyId();
        if (StringUtils.isNotNull(info) && info.getCompanyId().longValue() != companyId.longValue()) {
            result = "1";
        }
        return result;
    }
}
